<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //1，定义一个由整数组成的数组{1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5}，计算出数组中的奇数个数与偶数个数(0也算偶数)。并打印
    let arr = [1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5];

    let jishu = 0; //奇数个数
    let oushu = 0; //偶数个数
    // 方式一
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] % 2 == 0) {
            // 偶数
            // oushu++;
            // oushu = oushu + 1;
            oushu += 1;
        } else {
            jishu++;
        }
    }
    // 方式二
    for (let index in arr) {
        if (arr[index] % 2 == 0) {
            oushu += 1;
        } else {
            jishu++;
        }
    }
    // 方式三
    arr.forEach(function (value) {
        if (value % 2 == 0) {
            oushu += 1;
        } else {
            jishu++;
        }
    })
    // 方式四
    // item是元素的值
    for (let item of arr) {
            if (item % 2 == 0) {
                oushu += 1;
            } else {
                jishu++;
            }
    }
    console.log(jishu, oushu);

    // 2. 在将题1中的数组中的非0元素移动一个新的数组中。
    // let arr1 = arr.filter(function (value) {
    //     return value != 0;
    // });
    let arr1 = [];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] != 0) {
            arr1.push(arr[i]);
            // arr1.unshift(arr[i]);
            // arr1[arr1.length] = arr[i];
            // arr1.splice(0, 0, arr[i]);
        }
    }

    console.log(arr1);

    // 3. 在题2的新数组中，求出数组的元素和、最大值与最小值、平均值、反转，并输出打印
    // 求和
    let sum = 0; //保存和
    // for (let i = 0; i < arr1.length; i++) {
    //     sum += arr1[i];
    // }
    // arr1.forEach(value => sum+=value);
    sum = arr1.reduce((pre, cur) => pre + cur, 0);//推荐使用
    console.log("sum", sum);
    console.log(Math.max(...arr1));
    console.log(Math.min(...arr1));
    let max = arr1[0]; // 假设第一个元素是最大值
    for (let i = 0; i < arr1.length; i++) {
        if (max < arr1[i]) {
            max = arr1[i];
        }
    }
    console.log("max", max);
    let min = arr1[0]; // 假设第一个元素是最小值
    for (let i = 0; i < arr1.length; i++) {
        if (min > arr1[i]) {
            min = arr1[i];
        }
    }
    console.log("min", min);
    console.log("avg", sum / arr1.length);
    console.log(arr1.reverse())
    for (let i = 0, j = arr1.length - 1; i < arr1.length / 2, j > arr1.length / 2; i++, j--) {
        // 面试题
        // 交换位置，两杯水，三个杯子
        // let temp = arr1[i];
        // arr1[i] = arr1[j];
        // arr1[j] = temp;
        // 加减法
        // arr1[i] = arr1[i] + arr1[j];
        // arr1[j] = arr1[i] - arr1[j];
        // arr1[i] = arr[i] - arr1[j];
        // 异或运算符，效率最高的
        arr1[i] = arr1[i] ^ arr1[j];
        arr1[j] = arr1[i] ^ arr1[j];
        arr1[i] = arr1[i] ^ arr1[j];
    }
    console.log(arr1);

    // 4. 产生一个随机数，然后判断该随机数是否属于题2的数组中，如果是，请打印其[所有]位置
    let r = Math.floor(Math.random() * 8);
    console.log(arr1);
    console.log(`${r}在数组arr1中的位置：${arr1.indexOf(r)}`);
    for (let index in arr1) {
        if (r == arr1[index]) {
            console.log(index);
            // break;
        }
    }


</script>
</body>
</html>